/* Used to make sure files are only brought in once */
#ifndef LIGHT_H
#define LIGHT_H

#include <vector>
using namespace std;

#include "Vec3f.h"
#include "IDrawable.h"

class Light
   {
   public:
      enum Mode { SPOT, POINT, DISTANT };
      Light();
      ~Light();
      void draw();
      void setAmbience(Vec3f);
      void setDiffuse(Vec3f);
      void setSpecular(Vec3f);
      void setPosition(Vec3f);
      void setDirection(Vec3f);
      void setMode(Mode);
      void setSpotAngle(float);
      void setSpotExponent(float);
      Vec3f getPosition();
      void addShadowObject(IDrawable*);
      void enable();
      void disable();
      double getLightNum();
   protected:
      static int _lightNum;
      int lightNum;
      Vec3f amb;
      Vec3f dif;
      Vec3f spec;
      Vec3f pos;
      Vec3f dir;
      float angle;
      float spotExp;
      Mode mode;
      vector<IDrawable*> objects;
   };

#endif

